import path from 'path';
import { fileURLToPath } from 'url';
import NodePolyfillPlugin from 'node-polyfill-webpack-plugin';

// 获取当前模块的目录名
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export default {
  entry: './app.js',
  target: 'node14',
  node: {
    __dirname: true,
    __filename: true,
    global: true,
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
    clean: true,
    module: true, // 使输出为 ES Module
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader', // 使用 Babel 处理 JavaScript 文件
          options: {
            presets: ['@babel/preset-env'],
          },
        },
      },
    ],
  },
  devtool: 'source-map', // 生成 source map
  experiments: {
    outputModule: true, // 启用模块输出
  },
  resolve: {
    extensions: ['.js'],
    fallback: {
      path: false,
      fs: false, // 如果不需要 fs 模块，可以设置为 false
      url: false,
      net: false,
      async_hooks: false,
      // 添加其他需要 polyfill 的模块
    },
  },
  plugins: [
    new NodePolyfillPlugin(), // 添加 polyfill 插件
  ],
};
